#include "reproductorsonidos.h"

ReproductorSonidos::ReproductorSonidos()
{
	totalSonidos = 0;
    sonido = NULL;        
}

ReproductorSonidos::~ReproductorSonidos()
{
    limpiar();
}

bool ReproductorSonidos::estaInsertado(const QString& ruta, int* posicion)
{
    int i = 0;
    foreach (Sonido* sonidoAlmacenado, listaSonidos) {
        if (sonidoAlmacenado->getRuta() == ruta) {
            (*posicion) = i;
            return true;
        }
        i++;
    }
    (*posicion) = -1;
    return false;
}



void ReproductorSonidos::reproducir(const QString& ruta,                                     
                                    Phonon::AudioDataOutput::Channel canal, 
                                    bool repetir,
                                    float volumen)
{
	int posicion;
    if (!estaInsertado(ruta, &posicion)) {
        sonido = new Sonido(ruta, repetir);
	    sonido->setVolumen(volumen);
        listaSonidos.append(sonido);
    } else {
        sonido = listaSonidos.at(posicion);
    }    
    sonido->reproducir();    
}

void ReproductorSonidos::pausar(const QString& ruta)
{
    int posicion;
    if (estaInsertado(ruta, &posicion)) {
        sonido = listaSonidos.at(posicion);
        sonido->pausar();
    }
}

void ReproductorSonidos::parar(const QString& ruta)
{
    int posicion;
    if (estaInsertado(ruta, &posicion)) {
        sonido = listaSonidos.at(posicion);
        sonido->parar();
    }
}

void ReproductorSonidos::limpiar()
{
    foreach (Sonido* sonidoAlmacenado, listaSonidos) {
        delete sonidoAlmacenado;
    }
    listaSonidos.clear();
}